home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9509 / REXX.CD < prev    next >
Text File  |  1996-03-02  |  7KB  |  123 lines

  1.           @VIBM PC DOS 7 Rexx@N
  2.  
  3.           @VA batchek királya@N
  4.  
  5.               A   DOS   batch  file-jai   (.BAT)   viszonylag  kevéssé
  6.           programozhatók,   néha   valóságos   mûvészet   például  egy
  7.           telepítôprogramot  batchben  elkészíteni.  Jellemzô probléma
  8.           például   az,   hogy   nem   tudjuk   lekérdezni   a  szabad
  9.           lemezkapacitást.
  10.               Az ilyen és hasonló problémák leküzdésére sok kiegészítô
  11.           megoldás (4DOS, Norton Batch Enhancer stb.) született, közös
  12.           tulajdonságuk  az,  hogy  egymással  nem  kompatibilisek, és
  13.           külön kell beszerezni ôket.
  14.               Az  IBM-nek  már  korábban  volt  egy  fejlettebb script
  15.           rendszere, a Rexx (REstructured eXtended eXecutor language),
  16.           de csak nagyobb rendszereken volt elérhetô. A PC DOS 7-tel a
  17.           Rexx immár bekerült a DOS-világba is.
  18.               A  Rexx  leginkább  a  Unix  shell  scriptekhez  hasonló
  19.           képzôdmény:  kisebb-nagyobb  önálló  --  akár  interaktív --
  20.           programok is írhatók benne, de meglévô programjaink  batchbe
  21.           építését is támogatja.
  22.               Vannak változói, aritmetikai és stringkezelô utasításai,
  23.           feltételes  vezérlésátadó  és  ciklusszervezô  utasításai --
  24.           azaz  ""rendes" programozási  nyelv, alaposan  túllép a  DOS
  25.           hagyományos batcheinek programozhatóságán.  Utasításkészlete
  26.           elsôsorban rendszervezérlési célokra  készült, azaz a  külsô
  27.           programokkal való lehetô legjobb ötvözhetôségére  törekedtek
  28.           a fejlesztôk.
  29.               A  Rexxnek  több megvalósítása  is  létezik (OS/2  Rexx,
  30.           Watcom Visual Rexx, van Novell NLM-ként is stb.), ezek  alap
  31.           utasításkészlete  azonos, természetesen  az adott  operációs
  32.           rendszerhez szorosan kötôdô utasításaik is vannak. Ezért  ne
  33.           várja el senki, hogy például a DOS-os verzió végrehajtsa  az
  34.           OS/2-es Rexx multitask-kezelô parancsait.
  35.  
  36.  
  37.           @VA nyelv szerkezete@N
  38.  
  39.               A  Rexx  interpretált  nyelv,  vagyis  az  eredeti Basic
  40.           nyelvhez hasonlóan a forráskód lefordítása és a  lefordított
  41.           kód  futtatása  helyett  az  utasítássorokat  futás   közben
  42.           egyenként  hajtja  végre  a  Rexx  interpreter.  A   Basicek
  43.           többségével   ellentétben   itt   semmiféle   elôfeldolgozás
  44.           (tokenizálás,   elsôdleges   szintaktikai   ellenôrzés)  nem
  45.           történik, maga a forrásszöveg (script) hajtódik végre,  akár
  46.           csak a Unix shell scriptek vagy a DOS .BAT file-ok esetén.
  47.               Az  utasítássorok  szerkezete  egyszerû,  aki  már ismer
  48.           valamilyen magasszintû nyelvet  (Basic, C, Pascal  stb.), az
  49.           szinte  azonnal  tud  Rexx   scriptet  is  írni,  a   DOS-os
  50.           batchekben járatosak sem fognak sokáig ügyetlenkedni.
  51.               Az sorok utasításszóból és  ha kell, az utána  következô
  52.           paraméterekbôl  állnak,  illetve,  ha  szükséges,  az   elsô
  53.           utasítást  címke  (@Knév:@N)  elôzheti  meg.  Egy  sorban   több
  54.           utasítás  is  lehet,  pontosvesszôvel  elválasztva.  Mivel a
  55.           feldolgozás  soronként  történik,  a  sorvégi   pontosvesszô
  56.           elhagyható.
  57.               A Rexxnek szöveges  változói vannak, ezekkel  string- és
  58.           aritmetikai  mûveleteket   is  tud   végezni.  Tömböket   és
  59.           összetettebb  adatszerkezeteket   nem  ismer.   Az  egyetlen
  60.           bonyolultabb  adatszerkezet  a   Rexx  saját  verme.   Ennek
  61.           tetejére a @KPUSH adat@N  utasítással pakolhatunk, onnan a  @KPULL
  62.           @Kadat@N-tal vehetünk le értéket. E verem segítségével  könnyûvé
  63.           válik a  könyvtárak közötti  navigálás: egy  PUSH paranccsal
  64.           elmentjük az aktuális  könyvtár nevét, utána  más könyvtárba
  65.           átlépve  könnyen  visszatalálhatunk  a  kiindulási   helyre,
  66.           hiszen az eredeti könyvtárnév visszanyerhetô a verembôl.
  67.               Bár valódi tömböket nem használ a Rexx, azok makrózással
  68.           szimulálhatók. A
  69.               @KZ.1 = 23
  70.               @KZ.2 = 'ez egy string'
  71.               @KIDX = 2
  72.               @KDAT = 4
  73.               @KSAY Z.IDX@N
  74.               program  az ""ez  egy string"  üzenetet fogja  kiírni  a
  75.           képernyôre, viszont  a @KSAY  Z.DAT@N a  ""Z.DAT" szöveget fogja
  76.           megjeleníteni, mert nincs Z.DAT változó.
  77.  
  78.  
  79.           @VRutinok: függvények és eljárások@N
  80.  
  81.               A Rexx alaputasításait  sok belsô függvény  egészíti ki,
  82.           ezek  nagy  része  stringkezelô:  összehasonlítás,  keresés,
  83.           rész-stringek  kiemelése,  szóközöket  tartalmazó   stringek
  84.           szavakra bontása stb. A maradék függvénykészlet  aritmetikai
  85.           (ABS, SIGN stb.),  rendszerinformációs (TIME, DATE  stb.) és
  86.           I/O utasításokra oszlik.
  87.               A  cikk elején  említett problémát,  azaz, hogy  mekkora
  88.           szabad hely  van a  merevlemezen, az  alábbi módon oldhatjuk
  89.           fel:  végrehajtatunk egy  @K'DIR >DIR.TXT'@N  parancsot, majd  a
  90.           létrejött   DIR.TXT   file-ból  a   @Ksor   =  LINEIN(DIR.TXT)@N
  91.           utasítással egyenként a @Ksor@N változóba olvashatjuk a sorokat,
  92.           köztük  a szabad  helyet megadót  is. Innen  a  stringkezelô
  93.           függvényekkel már könnyen kinyerhetô a kért adat. (A  DIR...
  94.           parancsot azért  kell aposztrófok  közé tenni,  hogy a  Rexx
  95.           tudja, hogy ez külsô parancs.)
  96.               A belsô függvények mellett saját eljárások is írhatók, a
  97.           @Kcímke:   PROCEDURE   ...   RETURN@N   parancsok   közé   ékelt
  98.           szubrutinban lokális változók is használhatók.
  99.               Belsô parancsok is készíthetôk, ezek lehetnek újabb REXX
  100.           scriptek, vagy  bináris REXX  programok is,  (DOS alatt .COM
  101.           vagy .EXE file-ok),  .RX kiterjesztésre átnevezve.  Ezek egy
  102.           speciális  interface  használatával  maguk  is   közvetlenül
  103.           elérhetik    a    REXX    változóterületét,   használhatják,
  104.           módosíthatják azt. A  dokumentációban részletesen leírták  a
  105.           Rexx programinterface használatát.
  106.  
  107.  
  108.           @VA Rexx DOS alatt@N
  109.  
  110.               DOS alatt a  parancsfile-okat a REXX.EXE  program hajtja
  111.           végre. Azért, hogy ne kelljen beírni minden Rexx  programnév
  112.           elé a végrehajtó  programot is (@KRexx  file-név@N), a PC  DOS 7
  113.           készítôi  egyszerûsítettek  a dolgon:  a  COMMAND.COM minden
  114.           .BAT   file   végrehajtásakor   megnézi,   hogy   az    Rexx
  115.           magyarázósorral (/* .... */)  kezdôdik-e, és ha igen,  akkor
  116.           végrehajtás helyett átadja azt a REXX.EXE-nek.
  117.               Bár Rexx  elég egyszerû  nyelv, hatékony  script file-ok
  118.           írhatók benne. Azon csodálkozom egy kicsit, hogy az  IBM-nek
  119.           csak most jutott eszébe DOS alá is megcsinálni.
  120.  
  121.           @KBata László@N
  122.  
  123.           @<9509\REXX.GIF>■■@N  Egy kisebb példaprogram a Rexx hypertext leírásában